home *** CD-ROM | disk | FTP | other *** search
-
- Hinweise zum Anpassen von Programmen, die mit dem System der Version 1
- (Compiler Version 3) erstellt wurden.
-
-
- Hier erfahren Sie, wie Sie Ihre alten Modula-Programme auf das neue System
- der Version 2 (Compiler Version 4) übertragen.
-
- Sie sind leider gezwungen, alle ihre alten Module neu zu übersetzen.
- Machen Sie sich zuvor mit der Bedienung von 'ModRef' (Kap. 2.7) vertraut,
- das Programm kann Ihnen dabei eine große Hilfe sein.
-
- Auf die meisten notwendigen Änderungen wird Sie der Compiler selbst hinweisen.
- Sie müssen dann nur die entsprechenden Korrekturen vornehmen. Meist müssen
- Sie eine Funktion nun aus einem anderen Modul importieren oder einen
- Parameter ergänzen.
-
- Schwierig wird es, wenn Sie Funktionen der Megamax-Bibliothek in Assembler
- aufgerufen haben und sich dort nun Parameter geändert haben. In diesem
- Fall kann Ihnen der Compiler nicht helfen - Sie müssen die betroffenen
- Stellen selbst finden und anpassen.
-
-
- 1. Änderungen am Compiler von Version 3 auf Version 4.
-
-
- Folgende Änderungen werden vom Compiler nicht als Fehler angezeigt, müssen
- aber angepaßt werden, damit die Programme wie bisher laufen:
-
- Bei eingeschaltetem Range-Check ($R+) wird nun nein Laufzeitfehler angezeigt,
- wenn bei einer CASE-Anweisung keine der Selektionen zutrifft und auch kein
- ELSE-Zweig besteht. Abhilfe: Entweder die Module mit $R- übersetzen
- ("-R" in der Direktiven-Zeile der Compiler-Box) oder leere ELSE-Zweige
- einfügen.
-
- Ebenso werden nun Über-/Unterläufe bei INC und DEC bei $R+ erkannt.
- Normalerweise ist das sicher auch erwünscht, sodaß hierauf kaum geachtet
- werden muß.
-
- Die Compiler der Version 3 kannten nur einen Real-Typ (64 Bit) namens REAL.
- Dieser heißt nun LONGREAL. Bei alten Programmen sollten Sie deshalb alle
- Vorkommen von REAL durch LONGREAL ersetzen. Analog muß auch FLOAT nach
- LFLOAT umbenannt werden!
-
- SETs mit mehr als 8 Elementen werden nun anders angeordnet. Für Zugriffe auf
- externe Sets (Hardware-Bits, GEM-Sets) müssen die Set-Definitionen entweder
- angepaßt oder mit der Option $U- (s. Compiler-Direktiven) übersetzt
- werden. Vorsicht auch mit dem Operieren auf diesen Sets in Assembler!
-
- Die Elemente von RECORDs werden nun immer in ihrer Deklarationsfolge
- abgelegt, auch wenn sie mit Kommata aufgezählt werden. Die alte,
- umgekehrte Reihenfolge können Sie mit der Direktive $T- wiedererlangen.
-
-
- Die weiteren Fälle werden vom Compiler erkannt, sodaß nach ihnen nicht
- extra gesucht werden braucht:
-
- Was früher VAL war, heißt nun CAST. Wurde VAL benutzt, mußte es aus SYSTEM
- importiert werden. Da VAL nun nicht mehr in SYSTEM ist, wird der Compiler
- den Import sofort bemäkeln. Ersetzen Sie dann einfach alle Vorkommen
- von VAL durch CAST. In wenigen Fällen kann es vorkommen, daß auch CAST
- nicht mehr erlaubt ist - informieren Sie sich dann im Kapitel des Compiler
- über CAST.
-
- Strings ungleicher Länge sind nicht mehr zuweisungskompatibel. Benutzen Sie
- Assign aus dem Strings-Modul!
-
- Laufvariablen für FOR unterliegen nun einigen Einschränkungen. Mehr dazu
- im Kapitel zum Compiler. Abhilfe läßt sich meist durch Einführen einer
- neuen lokalen Variable leisten.
-
- ASSEMBLER muß nun aus SYSTEM importiert werden.
-
-
- 2. Änderungen in der Bibliothek von Systemversion 1 auf Version 2.
-
- Betrifft nur diejenigen, die das M2Init-Modul (für die Grundinitiali-
- sierung eines gelinkten Programms) selbst ersetzen: In Version 1 wurde
- in A0 ein Zeiger auf die base page übergeben - nun geschieht dies
- nur noch bei Accessories; ist der Wert Null, ist es kein Accessory-Start
- und man erhält den Zeiger auf die base page über die Adressierung 4(A7).
- Außerdem wird nun in A2 der Zeiger auf den PDB übergeben, dieser lag
- bisher immer bei einem konstanten Abstand vom Codebeginn aus.
-
-
- Modul Directory
-
- Der Eintrag path bei DirQueryProc ist nun ein REF-Parameter. Wenn Sie
- DirQuery benutzen, muß demnach die angegebene Prozedur das Schlüsselwort
- "REF" beim path-Parameter erhalten.
-
- Das Aufzählungselement writtenAndClosedAttr wurde in archiveAttr umbenannt.
-
- Die Typen Drive und DriveSet befinden sich nun im Modul MOSGlobals.
-
- Die Funktionen SplitPath und SplitName sind nun im Modul FileNames.
-
-
- Modul Loader
-
- CallModule wurde um zwei Parameter erweitert: In env kann ein Zeiger auf
- ein selbstdefiniertes "Environment" übergeben werden; hier braucht
- dazu einfach NIL übergeben werden.
-
- Der Parameter driver hat noch keine Funktion; für ihn ist NoDrivers
- aus dem Loader-Modul zu übergeben.
-
-
- Modul Clock
-
- Die Typen Time und Date befinden sich nun im Modul MOSGlobals.
-
-
- Modul Paths
-
- Die Definitionen von PathList und PathEntry stehen nun im Modul MOSGlobals.
-
- Die Funktionen StdPaths, SetPaths, New- und PrevStdPaths wurden entfernt,
- stattdessen muß nun eine eigene Variable für die entsprechende Liste
- deklariert werden.
-
- Der FileSelector für SearchFile wird nun im Modul PathEnv definiert.
-
-
- Modul KbdCtrl
-
- Das Conterm-Bit muß nun von außen gesetzt
- werden, z.B. mit der dortigen Funktion ExtendedMode (TRUE).
-
-
- Modul XBIOS
-
- SuperExec hat nun einen PROC- statt ADDRESS-Parameter. Damit entfällt
- das lästige Typwandeln, wenn eine Modula-Prozedur darüber aufgerufen
- werden soll.
-
-
- Modul GemEnv
-
- Die Funktion SuspendedProcess wurde entfernt, da sie unbrauchbar war.
-
- Die FileSelect-Routine befindet sich nun im Modul PathEnv.
-
-
- Modul Timeconvert
-
- Die Funktion TimeToString hat nun einen optionalen Format-Parameter.
- Zur Anpassung ist hier ein Leerstring anzugeben.
-
-
- Modul VT52
-
- Die Sequenzen sind nun Konstanten.
-
-
- Modul Calls
-
- CallSystem und CallExternal wurden entfernt, stattdessen können nun
- CALLSYS und CALLEXT aus SYSTEM verwendet werden.
-
-
- Diverse Module
-
- FileBase.ErrMsgField heißt nun MOSConfig.FileErrMsg;
- ErrBase.MsgField heißt nun MOSConfig.RuntimeErrMsg.
-
- Die Funktionen WriteNum, ConvNum und NumToStr erlauben nun am Ende die
- Angabe des Füll-Zeichens. Zur Anpassung ist hier "0" anzugeben.
-
- ReadReal liest nun den 4-Byte Datentyp REAL, für LONGREAL muß ReadLReal
- verwendet werden.
-
- Ende.
-